梦入琼楼寒有月,行过石树冻无烟

Spring boot 核心注解

@SpringBootApplication 注解

在spring boot应用之中,咱把范围缩小一点,就是说spring boot应用的快速构建包下的启动类中,通常的类名称为 “XXXApplication.java”在spring boot的快速构建包下的启动类名称通常会为“DemoApplication”,而这个启动类名称前的(即Application前的)名称,是由你在https://start.spring.io/生成中的名称,比如本文是通过默认的名称来进行下载的,所以就是**DemoApplication**。
通常在未没有放上注解的情况下,这个就是一个程序入口类,并不是一个启动类,而在他真正成为一个启动类之前,需要在名为XXXApplication程序入口类中写上一个程序的启动类加上spring boot核心注解为@SpringBootApplication标注为应用的启动类,而不是单单的程序入口。你也可以理解为你一个处男,只有当有女朋友之后干了那个事情你才可以成为男人懂我意思吧?。

另外,在spring boot中的启动类都有一个非常标准的Java应用程序main方法,在main方法中通过SpringApplication.run(DemoApplication.class, args);,来启动spring boot应用,启动类的标准代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}

}

注意啊,上面代码不用你自己写,人家spring boot是遵循开箱即用原则的,虽然说最后还要导入后下载并更新maven,很多树上和文章上都会让读者手写上面的标准代码,其实他们也不一定是手写的,就是他妈的复制粘贴在这装比,凑个文章字数显得高达上,就跟本文一样。

在这其中,@SpringBootApplication是spring boot应用中的核心注解,也是一个组合注解,主要组合了@ComponentScan、@SpringBootConfiguration、@EnableAutoConfiguration等注解,我们可以通过查阅java的官方文档得知结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Open Declarationorg.springframework.boot.autoconfigure.SpringBootApplication

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters={@Filter(type=CUSTOM, classes={TypeExcludeFilter.class}), @Filter(type=CUSTOM, classes={AutoConfigurationExcludeFilter.class})})
@Target(value={TYPE})
@Retention(value=RUNTIME)
@Documented
@Inherited
Indicates a configuration class that declares one or more @Bean methods and also triggers auto-configuration and component scanning. This is a convenience annotation that is equivalent to declaring @Configuration, @EnableAutoConfiguration and @ComponentScan.

Since:
1.2.0
Author:
Phillip Webb
Stephane Nicoll
Andy Wilkinson

关闭特定的自动配置类

SpringBootApplication.class中我们可以通过其注释了解到@SpringBootApplication注解的作用和其他方式,如我们可以使用@SpringBootApplication注解来实现关闭特定的自动配置类

ID DA
@AliasFor(annotation = EnableAutoConfiguration.class) 排除特定的自动配置类
@AliasFor(annotation = EnableAutoConfiguration.class) 排除特定的自动配置类名

@EnableAutoConfiguration 注解

@EnableAutoConfiguration注解可以让spring boot可以根据当前的应用项目的依赖自动选择jar文件来自动配置

@ComponsentScan 注解

@ComonsentScan注解功能让Spring Boot自动扫描@SpringBootApplication所在类的同级包中的配置

⬅️ Go back